﻿goog.provide('imc.ui.CatEmpresa');

imc.ui.CatEmpresa = function (opt) { //Constructor
    //attributes privados
    var dataGrid;

    /*\\Behavior : --------------------------------- */
    //Todos los ids van con #
    this.opt = {
        idDivContent: "#der"
        , idDivNav: "#izq"
        , idTableDataTable: "#tblCat"
    };

    $().extend(this.opt, opt);
    //alert(this.opt.test);
    this.draw();
    /*//Behavior : --------------------------------- */
} //Fin constructor

//Atributos Público************************************************
imc.ui.CatEmpresa.prototype.oTable = null;
imc.ui.CatEmpresa.prototype.opt = null;

//Metodos Públicos*************************************************
imc.ui.CatEmpresa.prototype.draw = function () {
    $(this.opt.idDivNav).load('catalogos.html #navigationPanelCat', function () { });
    this.loadContent();
};

imc.ui.CatEmpresa.prototype.loadContent = function () {
    var that = this;
    $(this.opt.idDivContent).load('catalogos.html #catContent', function () {
        that.catEmpresaDataTable();
    });
};

imc.ui.CatEmpresa.prototype.catEmpresaDataTable = function () {
    var that = this;
    $.ajax({
        url: "Services/CAT.svc/GetDataEmpresa"
        ,type: "POST"
        ,dataType: "json"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,success: function (data) {
            oTable = $('#tblCat').dataTable({
                'bInfo': false
                ,'bPaginate': false
                ,'bLengthChange': false
                ,'bRetrieve': true, 'sDom': ''
                ,'sInfoEmpty': ''
                ,'bAutoWidth': false
                ,aaData: data.GetDataEmpresaResult
                ,aoColumns: [
                    {
                        "aTargets": [0]
                        ,"fnRender": function (oObj) {
                            return '<input type="checkbox" id="readonly" imc-data="' + oObj.aData["ID_EMPRESA"] + '" value="' + oObj.aData[0] + '" name="check" />';
                        }
                        ,"sClass": "checkboxId"
                        ,"bSearchable": false
                        ,"bSortable": false
                        ,"mDataProp": "check"
                        ,"sWidth": "4%"
                    }
                    ,{ "sTitle": "Nombre", "mDataProp": "EMPRESA_NAME", "sClass": "editarCat" }
                    ,{ "sTitle": "Razón Social", "mDataProp": "RAZON_SOCIAL", "sClass": "editarCat" }
                    ,{ "sTitle": "RFC", "mDataProp": "RFC", "sClass": "editarCat" }
                    ,{ "sTitle": "Dirección", "mDataProp": "DIRECCION", "sClass": "editarCat" }
                ]
            });
            $('#tblCat tbody .editarCat').die('click');
            $('#tblCat tbody .editarCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var sDataCat = oTable.fnGetData($(this).parent().get(0));
                console.log(sDataCat);
                for (var i in sDataCat) {
                    if (i = 'ID_EMPRESA') {
                        idCat = sDataCat[i];
                    }
                }
                var dlg = that.dlgUpdateEmpresa(idCat);
                dlg.setVisible(true);
                //Recuperar campos para modificar
                $.ajax({
                    type: "POST"
                    ,url: "Services/Cat.svc/GetOneEmpresa"
                    ,data: '{"ID_EMPRESA":' + idCat + '}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        if (data.GetOneEmpresaResult != null) {
                            /*\\Object CharCounter : ------------------------*/
                            var userCharCounter = new imc.CharCounter({columnName:"EMPRESA"});
                            /*//Object CharCounter : ------------------------*/
                            document.getElementById('EMPRESA_NAME').value = data.GetOneEmpresaResult["EMPRESA_NAME"];
                            document.getElementById('RAZON_SOCIAL').value = data.GetOneEmpresaResult["RAZON_SOCIAL"];
                            document.getElementById('RFC').value = data.GetOneEmpresaResult["RFC"];
                            document.getElementById('DIRECCION').value = data.GetOneEmpresaResult["DIRECCION"];
                        } else {
                            alert('Los datos vienen vacios ({"GetOneEmpresaResult":null})');
                        }
                    }
                    ,error: function (result) {
                        alert('Error al recuperar Empresa ' + result.status + ' ' + result.statusText);
                    }
                });
            });
            $('.newCat').die('click');
            $('.newCat').live('click', function () {
                var dlg = that.dlgNewCatEmpresa();
                dlg.setVisible(true);
                /*\\Object CharCounter : ------------------------*/
                var userCharCounter = new imc.CharCounter({columnName:"EMPRESA"});
                /*//Object CharCounter : ------------------------*/
            });
            $('.deleteCat').die('click');
            $('.deleteCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var stringDeleteCat = "";
                $('input[type="checkbox"]:checked', oTable.fnGetNodes()).each(function (i) {
                    stringDeleteCat += $(this).attr("imc-data") + ",";
                });
                if (stringDeleteCat != "") {
                    stringDeleteCat = stringDeleteCat.substring(0, stringDeleteCat.length - 1);
                }
                if (stringDeleteCat != "") {
                    var dlg = that.dlgDeleteCatEmpresa(stringDeleteCat);
                    dlg.setVisible(true);
                } else {
                    alert('No hay ninguna Empresa seleccionado');
                    return true;
                }
            });
        }
        ,error: function (result) {
            alert('Error al obtener Empresas ' + result.status + ' ' + result.statusText);
        }
    });
}

imc.ui.CatEmpresa.prototype.reloadCatEmpresaDataTable = function () { //Recargar tabla al agregar, modificar o eliminar Empresa
    var that = this;
    $.ajax({
        type: "POST"
        ,url: "Services/CAT.svc/GetDataEmpresa"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,dataType: "json"
        ,success: function (data) {
            if (data.GetDataEmpresaResult != null) {
                var ot = $("#tblCat").dataTable();
                ot.fnClearTable();
                ot.fnAddData(data.GetDataEmpresaResult);
            } else {
                that.loadContent();
            }
        }
        ,error: function (result) {
            alert('Error al recargar la tabla de Empresa ' + result.status + ' ' + result.statusText);
        }
    });
}; //Fin recargar tabla al agregar, modificar o eliminar Empresa

imc.ui.CatEmpresa.prototype.dlgNewCatEmpresa = function () { //Dialog agregar Empresa
    var that = this;
    this.dialogAgregarCat = new goog.ui.Dialog();
    this.dialogAgregarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Nombre: </label></div><div style="width:450px; float:left;"><input type="text" id="EMPRESA_NAME" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Razón Social: </label></div><div style="width:450px; float:left;"><input type="text" id="RAZON_SOCIAL" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">RFC: </label></div><div style="width:450px; float:left;"><input type="text" id="RFC" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Dirección: </label></div><div style="width:450px; float:left;"><input type="text" id="DIRECCION" style="width: 250px;" /></div></div></div><br /><br />'
    );
    var titleNewCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Agregar Empresa');
    this.dialogAgregarCat.setTitle(titleNewCat);
    var btnNewCat = new goog.ui.Dialog.ButtonSet();
    btnNewCat.addButton({ caption: "Agregar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogAgregarCat.setButtonSet(btnNewCat);
    this.dialogAgregarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogAgregarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        }
        var val1 = $("#EMPRESA_NAME").val();
        var val2 = $("#RAZON_SOCIAL").val();
        var val3 = $("#RFC").val();
        var val4 = $("#DIRECCION").val();
        if (val1 == "" || val2 == "" || val3 == "" || val4 == "") {
            $('.validarCat').html('Todos  los campos son requeridos ');
            return false;
        }
        else if (val3.length<13)
        {
            $("#MAIL").removeClass('campoConError').addClass('campoSinError');
            $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
            $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
            $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
            $("#RFC").removeClass('campoSinError').addClass('campoConError');
            $('.validarCat').html('El RFC debe contener 13 caracteres')

            if (!/^([A-Z\s]{4})\d{6}([A-Z\w]{3})*$/.test(val3))
            {
                $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                $("#RFC").removeClass('campoSinError').addClass('campoConError');
                $('.validarCat').html('Ingrese un rfc valido')
                return false;
            }
        } else {
            $.ajax({
                url:"Services/CAT.svc/InsertEmpresa"
                ,type:"POST"
                ,data:
                    '{"EMPRESA_NAME":"' + val1
                    + '","RAZON_SOCIAL":"' + val2
                    + '","RFC":"' + val3
                    + '","DIRECCION":"' + val4 + '"}'
                ,contentType:"application/json; charset=utf-8"
                ,dataType:"json"
                ,success:function (data) {
                    var test = "";
                    test = data.InsertEmpresaResult.state;
                    console.log('state: ' + test);
                    if (!test) {
                        console.log("entro dlgNuevo");
                        $('.validarCat').html('Ya existe una Empresa con este nombre');
                        return null;
                    } else {
                        that.reloadCatEmpresaDataTable();
                        that.dialogAgregarCat.setVisible(false);
                    }
                }, error:function (result) {
                    alert('Error al agregar Empresa ' + result.status + ' ' + result.statusText);
                }
            });
            return false;
        }
    });
    return this.dialogAgregarCat;
};  //Fin dialog agregar Empresa

imc.ui.CatEmpresa.prototype.dlgDeleteCatEmpresa = function (stringDeleteCat) { //Dialog borrar Empresa
    var that = this;
    this.dialogBorrarCat = new goog.ui.Dialog();
    this.dialogBorrarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<label>¿Está seguro que desea eliminar las Empresas seleccionadas?</label><br />'
        +'</div>'
    );
    this.dialogBorrarCat.setTitle('Borrar Empresa');
    var btnBorrarCat = new goog.ui.Dialog.ButtonSet();
    btnBorrarCat.addButton({ caption: "Borrar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogBorrarCat.setButtonSet(btnBorrarCat);
    this.dialogBorrarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogBorrarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        } else {
            console.log(stringDeleteCat);
            $.ajax({
                url: "Services/CAT.svc/DeleteEmpresa",
                type: "POST",
                dataType: "json",
                data: '{"ID_EMPRESA": "' + stringDeleteCat + '" }',
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data) {
                        that.reloadCatEmpresaDataTable();
                        return true;
                    }
                },
                error: function (result) {
                    alert('Error al borrar Empresa ' + result.status + ' ' + result.statusText);
                }
            });
        }
    });
    return this.dialogBorrarCat;
}   //Fin dialog borrar Empresa

imc.ui.CatEmpresa.prototype.dlgUpdateEmpresa = function (idCat) { //Dialog modificar Empresa
    var that = this;
    this.dialogModificarCat = new goog.ui.Dialog();
    this.dialogModificarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Nombre: </label></div><div style="width:450px; float:left;"><input type="text" id="EMPRESA_NAME" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Razón Social: </label></div><div style="width:450px; float:left;"><input type="text" id="RAZON_SOCIAL" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">RFC: </label></div><div style="width:450px; float:left;"><input type="text" id="RFC" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Dirección: </label></div><div style="width:450px; float:left;"><input type="text" id="DIRECCION" style="width: 250px;" /></div></div></div><br /><br />'
    );
    var titleModificarCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Modificar Empresa');
    this.dialogModificarCat.setTitle(titleModificarCat);
    var btnModificarCat = new goog.ui.Dialog.ButtonSet();
    btnModificarCat.addButton({ caption: "Guardar cambios", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogModificarCat.setButtonSet(btnModificarCat);
    this.dialogModificarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogModificarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        //alert(e.key);
        if (e.key == "o") {
            return true;
        } else {
            var val1 = $("#EMPRESA_NAME").val();
            var val2 = $("#RAZON_SOCIAL").val();
            var val3 = $("#RFC").val();
            var val4 = $("#DIRECCION").val();
            if (val1 == "" || val2 == "" || val3 == "" || val4 == "") {
                $('.validarCat').html('Todos  los campos son requeridos ');
                return false;
            }
            else if (val3.length<13)
            {
                $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                $("#RFC").removeClass('campoSinError').addClass('campoConError');
                $('.validarCat').html('El RFC debe contener 13 caracteres')

                if (!/^([A-Z\s]{4})\d{6}([A-Z\w]{3})*$/.test(val3))
                {
                    $("#MAIL").removeClass('campoConError').addClass('campoSinError');
                    $("#ID_PAIS").removeClass('campoConError').addClass('campoSinError');
                    $("#ID_CIUDAD").removeClass('campoConError').addClass('campoSinError');
                    $("#CODIGO_POSTAL").removeClass('campoConError').addClass('campoSinError');
                    $("#RFC").removeClass('campoSinError').addClass('campoConError');
                    $('.validarCat').html('Ingrese un rfc valido')
                    return false;
                }
            } else {
                $.ajax({
                    url: "Services/Cat.svc/UpdateEmpresa"
                    ,type: "POST"
                    ,data:
                        '{"ID_EMPRESA":' + idCat
                        + ',"EMPRESA_NAME":"' + val1
                        + '","RAZON_SOCIAL":"' + val2
                        + '","RFC":"' + val3
                        + '","DIRECCION":"' + val4 + '"}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        that.reloadCatEmpresaDataTable();
                        return true;
                    }
                    ,error: function (result) {
                        alert('Error al modificar Empresa' + result.status + ' ' + result.statusText);
                    }
                });
            }
        }
    });
    return this.dialogModificarCat;
} //Fin dialog modificar Empresa